home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / graphics / a-g / dust / batchfiles / starfield.bat < prev    next >
DOS Batch File  |  1995-12-15  |  3KB  |  164 lines

  1. ;create a starfield of tetraeders randomly scaled and rotated
  2. ;Dust 2.11 or higher required (because of the 'if'-constructs)
  3. ;
  4.  
  5. ;--------------------------------------------------------
  6. ; public stuff
  7. ;--------------------------------------------------------
  8.  
  9. ;particle-size
  10. .size=2.0
  11.  
  12. ;space-size
  13. .rsize=100
  14.  
  15. ;number of particles
  16. .pnum=600
  17.  
  18. ;random scale-value (1-ds) .. (1+ds)
  19. .ds=0.2
  20.  
  21. ;buffers
  22. .src=1
  23. .tmp1=12
  24. .tmp2=13
  25. .tmp3=14
  26. .dest=2
  27.  
  28. ;--------------------------------------------------------
  29.  
  30. set(echo,off)
  31.  
  32. ;1. create a tetraeder
  33. echo(--------------------------------------------------------)
  34. echo("creating the source-object")
  35. echo(--------------------------------------------------------)
  36. .p1x=0
  37. .p1y=0
  38. .p1z=62
  39. .p2x=62
  40. .p2y=0
  41. .p2z=-36
  42. .p3x=-62
  43. .p3y=0
  44. .p3z=-36
  45. .p4x=0
  46. .p4y=86
  47. .p4z=0
  48. addface(src,p1x,p1y,p1z,p2x,p2y,p2z,p3x,p3y,p3z)
  49. addface(src,p1x,p1y,p1z,p2x,p2y,p2z,p4x,p4y,p4z)
  50. addface(src,p1x,p1y,p1z,p3x,p3y,p3z,p4x,p4y,p4z)
  51. addface(src,p2x,p2y,p2z,p3x,p3y,p3z,p4x,p4y,p4z)
  52. merge(src)
  53. color(src,160,160,160)
  54. spec(src,255,255,255)
  55. hardness(src,255)
  56.  
  57. ;load(1,<yourobject>)
  58.  
  59. ;2. get the object-size (maybe you did load another object)
  60. echo(--------------------------------------------------------)
  61. echo("calculating object-size")
  62. echo(--------------------------------------------------------)
  63. fcount(src)
  64. getpoint(src,0)
  65. .xmin=px
  66. .xmax=px
  67. .ymin=py
  68. .ymax=py
  69. .zmin=pz
  70. .zmax=pz
  71. for(i,1,fcount-1)
  72.  getpoint(src,i)
  73.  if(px<xmin,.xmin=px)
  74.  if(px>xmax,.xmax=px)
  75.  if(py<ymin,.ymin=py)
  76.  if(py>ymax,.ymax=py)
  77.  if(pz<zmin,.zmin=pz)
  78.  if(pz>zmax,.zmax=pz)
  79. end
  80. echo(xmin=,xmin)
  81. echo(xmax=,xmax)
  82. echo(ymin=,ymin)
  83. echo(ymax=,ymax)
  84. echo(zmin=,zmin)
  85. echo(zmax=,zmax)
  86.  
  87. ;3. scaling the object
  88. echo(--------------------------------------------------------)
  89. echo("scaling the object")
  90. echo(--------------------------------------------------------)
  91. .xsize=xmax-xmin
  92. .ysize=ymax-ymin
  93. .zsize=zmax-zmin
  94. if(xsize<ysize,.xsize=ysize)
  95. if(xsize<zsize,.xsize=zsize)
  96. .scl=size/xsize
  97. scale(src,scl,x)
  98. scale(src,scl,y)
  99. scale(src,scl,z)
  100. size(src)
  101.  
  102. ;4. do it
  103. .rs2=0-rsize*0.5
  104. echo(--------------------------------------------------------)
  105. echo("performing main-loop")
  106. echo(--------------------------------------------------------)
  107.  
  108.  
  109. copy(src,tmp3)
  110. .scl=rnd(1000)/999*ds
  111. if(rnd(2)=1,.scl=1+scl,.scl=1-scl)
  112. scale(tmp3,scl,x)
  113. scale(tmp3,scl,y)
  114. scale(tmp3,scl,z)
  115. rotate(tmp3,"rnd(360)",x)
  116. rotate(tmp3,"rnd(360)",y)
  117. rotate(tmp3,"rnd(360)",z)
  118. .posx=rnd(1000)/999
  119. .posx=rs2+posx*rsize
  120. .posy=rnd(1000)/999
  121. .posy=rs2+posy*rsize
  122. .posz=rnd(1000)/999
  123. .posz=rs2+posz*rsize
  124. translate(tmp3,posx,x)
  125. translate(tmp3,posy,y)
  126. translate(tmp3,posz,z)
  127.  
  128. for(i,2,pnum)
  129.  echo(" object ",i)
  130.  copy(src,tmp1)
  131.  .scl=rnd(1000)/999*ds
  132.  if(rnd(2)=1,.scl=1+scl,.scl=1-scl)
  133.  scale(tmp1,scl,x)
  134.  scale(tmp1,scl,y)
  135.  scale(tmp1,scl,z)
  136.  rotate(tmp1,"rnd(360)",x)
  137.  rotate(tmp1,"rnd(360)",y)
  138.  rotate(tmp1,"rnd(360)",z)
  139.  .posx=rnd(1000)/999
  140.  .posx=rs2+posx*rsize
  141.  .posy=rnd(1000)/999
  142.  .posy=rs2+posy*rsize
  143.  .posz=rnd(1000)/999
  144.  .posz=rs2+posz*rsize
  145.  translate(tmp1,posx,x)
  146.  translate(tmp1,posy,y)
  147.  translate(tmp1,posz,z)
  148.  join(tmp3,tmp1,tmp2)
  149.  copy(tmp2,tmp3)
  150. end
  151.  
  152. copy(tmp3,dest)
  153. kill(src)
  154. kill(tmp1)
  155. kill(tmp2)
  156. kill(tmp3)
  157.  
  158. ;5. That's it
  159. echo(--------------------------------------------------------)
  160. echo("object can be found in layer ",dest)
  161. echo(--------------------------------------------------------)
  162. window(dest)
  163. stats(dest)
  164.